//遍历对象属性
function getAtts(obj){
	var atts=[];
	for( var att in obj){
		alert(att.toString()+":"+obj[att].toString());
		atts.push(att);
	}
	return atts;
}

//字符是否在数组内
function wordInArray(obj , arr){
	var flag = false;
	var i = 0;
	while( i < arr.length){
		if( obj == arr[i]){
			flag = true;
			break;
		}
		else{
			i+=1;
			continue;
		}
	}
	if(i >= arr.length){
		i = -1;
	}
	return i;
}

/*约束检查
 * 
 */


//加载当前用户所有可读取台帐
function request(req_async , req_url , req_param){
	var returndata;
	//异步请求重新载入数据
	$.ajax({
		async:req_async,
		type:"post",
		url:req_url,
		data: req_param,
		dataType:"json",
		success:function( data ){
			returndata = data;
		},
		error:function(data){
			message(" error : "+data["info"],"errorInfo","red");
		}
	});
	return returndata;
}

//根据约束条件检查输入是否合法
function constraintCheck(val , type , cons){
	var returnval = val;// returnval 初始化为传入的值
	var flag = true;//值合法标记；如果为false 代表不符合约束条件
	switch(type){//读取当前的类型
	case '文本'://字符长度判定
		if( cons.length == 0){
			cons.push("0");}//如果cons里没有数据
		if(cons.length==1){cons.push(cons[0]);}
		var minLen =parseInt( cons[0] );
		if (returnval.length < minLen ){
			flag = false;//修改了填入内容作为真正记录的内容
			for(var i = 0; i < minLen - returnval.length;i++){
				returnval +=" ";
			}
		}
		else if(returnval.length >  parseInt(cons[1]) )
		{

			flag = false;//修改了填入内容作为真正记录的内容
			returnval = returnval.substr(0 , parseInt(cons[1]) );
		}
		break;
	case '数值'://数值：进行精度和大小判定
		var valStrArray = (val.toString() ).split(".");
		if( valStrArray.length >=2 ){//如果长度达到2，即可能输入多个小数点，则以第一个小数点有效
			flag = false;//修改了填入内容作为真正记录的内容
			returnval = parseFloat( valStrArray[0] +"." + valStrArray[1].substr(0,cons[2]) );
		}
		if (returnval < cons[0] ){
			returnval = cons[0];
			flag = false;//修改了填入内容作为真正记录的内容
		}
		if( returnval > cons[1] ){
			flag = false;//修改了填入内容作为真正记录的内容
			returnval = cons[1];
		}
		break;
	case '时间':
		var Datereg=new RegExp(/^\d{4}-\d{2}-\d{2}$/);
		var DateTimereg=new RegExp(/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/);
		var dtval = 0;
		if( typeof(returnval)=="string" && ( returnval.match(Datereg) || returnval.match(DateTimereg) ) ){dtval = (new Date( returnval.replace('-','/') ) ).getTime() ;}
		var dtmin = 0;
		if( typeof(cons[0])=="string" && ( cons[0].match(Datereg) || cons[0].match(DateTimereg) ) ){dtmin = (new Date( cons[0].replace('-','/') ) ).getTime() ;}
		var dtmax = 8640000000000000;
		if( typeof(cons[1])=="string" && ( cons[0].match(Datereg) || cons[1].match(DateTimereg) ) ){dtmax = (new Date( cons[1].replace('-','/') ) ).getTime() ;}
		//alert(dtval.toString() + " # " + dtmin.toString() + " # " + dtmax.toString() );
		if( dtval < dtmin){
			flag = false;//修改了填入内容作为真正记录的内容
			dtval = dtmin;
		}
		if( dtval > dtmax){
			flag = false;//修改了填入内容作为真正记录的内容
			dtval = dtmax;
		}
		returnval = dateToString( new Date(dtval) );
		break;
	case '选项'://默认值是否在选项内的判定
		var opts = cons[0].split(col_con_opt_delim);
		var optsflag = false;
		//搜索当前val是否在选项范围内
		for(var i = 0;i<opts.length;i++){
			if (val == opts[i] ){
				optsflag = true;
				break;}
		}
		//如果 val 值不在 opts 内，则填入 opts[0]
		if(optsflag==false){
			flag = false;//修改了填入内容作为真正记录的内容
			returnval = opts[0];
		}
		break;
	default:
		break;
	}
	return [flag,returnval];
}

//Date类型对象转为统一字符串
function dateToString(theDate){
	var val= theDate.getFullYear().toString()+"-"+ repairZero(theDate.getMonth()+1)+"-"+repairZero(theDate.getDate() )+" "+
	repairZero(theDate.getHours() )+":"+repairZero(theDate.getMinutes())+":"+repairZero(theDate.getSeconds());
	 return val;
}

//字符串补0
function repairZero(val){
	var str = val.toString();
	if(val < 10){str="0"+str;}
	return str;
}
/*输入内容检查
 * 
 */
function inputCheck(Str){
	//SQL注入检查及替换
	finalStr = sqlCheck(Str);
	
	return finalStr;
}

function sqlCheck(Str){
	var finalStr = Str.replace("'","＇");//单引号替换为引号
	finalStr = finalStr.replace("\"","\＂");//半角双引号替换为全角双引号
	finalStr = finalStr.replace();
	finalStr = finalStr.replace(";","；");//半角分号替换为全角分号
	finalStr = finalStr.replace(",","，");//半角逗号替换为全角逗号
	finalStr = finalStr.replace("?","？");//半角分号替换为全角分号
	finalStr = finalStr.replace("!", "！");
	finalStr = finalStr.replace("@", "＠");
	finalStr = finalStr.replace("#", "＃");
	finalStr = finalStr.replace("$","＄");
	finalStr = finalStr.replace("%", "％");
	finalStr = finalStr.replace("&", "&amp");
	finalStr = finalStr.replace("*", "＊");
	finalStr = finalStr.replace("=", "＝");
	finalStr = finalStr.replace("+", "＋");
	finalStr = finalStr.replace("<", "&lt");
	finalStr = finalStr.replace(">", "&gt");
	finalStr = finalStr.replace("(","）");
	finalStr = finalStr.replace(")","）");
	return finalStr;
}

/*数组快速排序（迭代算法）
 * array 为要排序的数组（元素也是数组）， sid 为排序依据值在元素数组中的下标
 * start 为起始位置下标
 * end 为结束位置下标
 */  
function quickSort( array , start , end , sid){
	if( end-start <= 0 ){return ;}
	if( !sid || sid >= array[start].length ){return;}//如果无法以s作为排序依据，返回
	var p = start;
	var q = end;
	while(p < q){
		while ( p < q && array[p][sid ] <= array[q][sid] ){q-=1;}
		if(  p < q && array[p][s] <= array[q][s] ){
			var tmp = array[p];
			array[p] = array[q];
			array[q] = tmp;	
		}
		while ( p < q && array[p][sid] <= array[q][sid] ){p+=1;}
		if(  p < q && array[p][s] <= array[q][s] ){
			var tmp = array[p];
			array[p] = array[q];
			array[q] = tmp;	
		}
	}
	quickSort(array , start , p , sid);
	quickSort(array , p+1,end , sid);
}

//从id 获得元素
function getEbyId(ele_id){
	return document.getElementById(ele_id);
}

//从 id 获得 value
function getVbyId(ele_id){if(!document.getElementById(ele_id)) alert("no element "+ele_id);
	return document.getElementById(ele_id).value;
}

//从 name 获得value
function getVbyName(ele_name){
	return document.getElementByName(elename).value;
}

//提示信息
function message(info, elementid, infoColor){
	document.getElementById(elementid).innerHTML = info;
	document.getElementById(elementid).style.color = infoColor;
}

//锁定元素
function lock( id , lockflag){
	if(lockflag==false){
		getEbyId(id).disabled = "";
	}
	else{
		getEbyId(id).disabled = true;
	}
}

//显示/隐藏元素
function display(id , displayflag){
	if( displayflag){
		getEbyId(id).style.display='block' ;
	}
	else{
		getEbyId(id).style.display='none' ;
	}
}

//使用公用表单跳转
function go(datavalue , action ){
	getEbyId("data").value=datavalue;
	getEbyId("form_goto").action=action;
	getEbyId("submit_premodify").click();
}